// add.js
// 导入请求工具
const { get, post, put } = require('../../utils/request');
const app = getApp();

Page({
  data: {
    id: '', // 地址ID，用于编辑模式
    isEditing: false, // 是否为编辑模式
    name: '', // 收货人姓名
    phone: '', // 手机号码
    province: '', // 省份
    city: '', // 城市
    district: '', // 区/县
    regionText: '', // 地区文本显示
    detail: '', // 详细地址
    zipCode: '', // 邮政编码
    isDefault: false, // 是否设为默认地址
    loading: false // 加载状态
  },

  onLoad: function(options) {
    // 检查是否是编辑模式
    if (options && options.id) {
      this.setData({
        id: options.id,
        isEditing: true
      });
      // 加载地址详情
      this.loadAddressDetail();
    }
  },

  /**
   * 加载地址详情（编辑模式）
   */
  loadAddressDetail: function() {
    this.setData({
      loading: true
    });

    get(`/api/addresses/${this.data.id}/`)
      .then(res => {
        const address = res || {};
        this.setData({
          name: address.name || '',
          phone: address.phone || '',
          province: address.province || '',
          city: address.city || '',
          district: address.district || '',
          regionText: `${address.province || ''}${address.city || ''}${address.district || ''}`,
          detail: address.detail || '',
          zipCode: address.zipCode || '',
          isDefault: address.is_default || false,
          loading: false
        });
      })
      .catch(err => {
        console.error('加载地址详情失败', err);
        this.setData({
          loading: false
        });
        wx.showToast({
          title: '加载地址失败',
          icon: 'none'
        });
      });
  },

  /**
   * 收货人姓名输入
   */
  onNameInput: function(e) {
    this.setData({
      name: e.detail.value
    });
  },

  /**
   * 手机号码输入
   */
  onPhoneInput: function(e) {
    this.setData({
      phone: e.detail.value
    });
  },

  /**
   * 详细地址输入
   */
  onDetailInput: function(e) {
    this.setData({
      detail: e.detail.value
    });
  },

  /**
   * 邮政编码输入
   */
  onZipCodeInput: function(e) {
    this.setData({
      zipCode: e.detail.value
    });
  },

  /**
   * 选择地区
   */
  selectRegion: function() {
    wx.chooseLocation({
      success: (res) => {
        // 这里简化处理，实际应该解析地址组件
        // 通常需要调用微信的地址解析API
        this.setData({
          regionText: res.name || '',
          // 这里只是示例，实际需要从返回结果中提取省市区信息
          province: res.address || '',
          city: '',
          district: ''
        });
      },
      fail: (err) => {
        // 用户取消选择
        if (err.errMsg === 'chooseLocation:fail cancel') {
          return;
        }
        console.error('选择地址失败', err);
        wx.showToast({
          title: '选择地址失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 切换默认地址
   */
  toggleDefault: function() {
    this.setData({
      isDefault: !this.data.isDefault
    });
  },

  /**
   * 保存地址
   */
  saveAddress: function() {
    // 表单验证
    if (!this.validateForm()) {
      return;
    }

    this.setData({
      loading: true
    });

    const addressData = {
      name: this.data.name,
      phone: this.data.phone,
      province: this.data.province,
      city: this.data.city,
      district: this.data.district,
      detail: this.data.detail,
      zip_code: this.data.zipCode,
      is_default: this.data.isDefault
    };

    let apiPromise;
    if (this.data.isEditing) {
      // 编辑模式
      apiPromise = put(`/api/addresses/${this.data.id}/`, addressData);
    } else {
      // 新增模式
      apiPromise = post('/api/addresses/', addressData);
    }

    apiPromise
      .then(() => {
        this.setData({
          loading: false
        });
        
        wx.showToast({
          title: this.data.isEditing ? '更新成功' : '添加成功',
          icon: 'success'
        });
        
        // 延迟返回上一页，确保用户看到成功提示
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      })
      .catch(err => {
        console.error(this.data.isEditing ? '更新地址失败' : '添加地址失败', err);
        this.setData({
          loading: false
        });
        wx.showToast({
          title: this.data.isEditing ? '更新失败' : '添加失败',
          icon: 'none'
        });
      });
  },

  /**
   * 表单验证
   */
  validateForm: function() {
    // 验证收货人姓名
    if (!this.data.name.trim()) {
      wx.showToast({
        title: '请输入收货人姓名',
        icon: 'none'
      });
      return false;
    }

    // 验证手机号码
    if (!this.data.phone.trim()) {
      wx.showToast({
        title: '请输入手机号码',
        icon: 'none'
      });
      return false;
    }
    
    // 简单的手机号码格式验证
    const phoneRegex = /^1[3-9]\d{9}$/;
    if (!phoneRegex.test(this.data.phone.trim())) {
      wx.showToast({
        title: '请输入正确的手机号码',
        icon: 'none'
      });
      return false;
    }

    // 验证地区选择
    if (!this.data.regionText.trim()) {
      wx.showToast({
        title: '请选择所在地区',
        icon: 'none'
      });
      return false;
    }

    // 验证详细地址
    if (!this.data.detail.trim()) {
      wx.showToast({
        title: '请输入详细地址',
        icon: 'none'
      });
      return false;
    }

    // 验证通过
    return true;
  },

  /**
   * 阻止事件冒泡
   */
  stopPropagation: function(e) {
    // 阻止事件冒泡到父元素
  }
});